package cn.bellychang.leetcode.question206;

/**
 * @author ChangLiang
 * @date 2020/11/2
 */
public class Solution {

    public ListNode reverseList(ListNode head) {

        ListNode prev = null;
        ListNode curr = head;

        // 循环不变量是prev及之前的都反转了

        while (curr != null) {
            // 保持循环不变量

            // 记录下一个位置
            ListNode next = curr.next;

            // 反转
            curr.next = prev;

            // 三个指针都向右移动一位
            prev = curr;
            curr = next;
        }

        return prev;
    }
}
